﻿using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using MEF1Test.Contract;

namespace MEF1Test
{
	class Program
	{
		[ImportMany(typeof(TestContract))]
		public IEnumerable<TestContract> AddIns { get; set; }

		static void Main(string[] args)
		{

			// 插件位于根目录的AddIns文件夹下。
			var path = Path.Combine(Environment.CurrentDirectory, "AddIns");
			
			// 加载插件目录。
			var catalog = new DirectoryCatalog(path);
			
			// 加载用于连接的容器。
			var container = new CompositionContainer(catalog);

			// 新建用于连接的宿主。
			var program = new Program();
			
			// 将宿主与插件集合在容器中连接。
			container.ComposeParts(program);

			// 调用宿主中的所有插件。
			foreach (var addin in program.AddIns)
			{
				addin.Run();
			}

			Console.Read();
		}
	}
}
